home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 January: Mac OS SDK / Dev.CD Jan 00 SDK1.toast / Development Kits / Mac OS / QuickTime / QuickTime 3 Interfaces & Libs / QTDevWin / CIncludes / QuickTimeVR.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-21  |  35.0 KB  |  1,094 lines  |  [TEXT/dosa]

  1. /*
  2.      File:        QuickTimeVR.h
  3.  
  4.      Contains:    QuickTime VR interfaces
  5.  
  6.      Version:    Technology:    QuickTime VR 2.1
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1997-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __QUICKTIMEVR__
  19. #define __QUICKTIMEVR__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. #ifndef __MOVIES__
  28. #include <Movies.h>
  29. #endif
  30.  
  31.  
  32.  
  33. #if PRAGMA_ONCE
  34. #pragma once
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_STRUCT_ALIGN
  46.     #pragma options align=mac68k
  47. #elif PRAGMA_STRUCT_PACKPUSH
  48.     #pragma pack(push, 2)
  49. #elif PRAGMA_STRUCT_PACK
  50.     #pragma pack(2)
  51. #endif
  52.  
  53. /******************************************************************************
  54.  *                                                                           **
  55.  * ABOUT QTVR_OLD_CALLS:                                                     **
  56.  *                                                                           **
  57.  * NOTE: Define QTVR_OLD_CALLS to 1 for your application makefile/project    **
  58.  *       only if you are sure that you need to use the older calls for       **
  59.  *       compatibility with VR 2.0 and 2.0.1 on the Macintosh                ** 
  60.  *                                                                           **
  61.  *****************************************************************************/
  62. #if !defined(QTVR_OLD_CALLS)
  63. #define QTVR_OLD_CALLS 0
  64. #endif  /*  ! defined(QTVR_OLD_CALLS)  */
  65.  
  66. typedef struct OpaqueQTVRInstance*         QTVRInstance;
  67.  
  68. /* Released API Version numbers */
  69. #define kQTVRAPIMajorVersion02  (0x02)
  70. #define kQTVRAPIMinorVersion00  (0x00)
  71. #define kQTVRAPIMinorVersion01  (0x01)
  72. #define kQTVRAPIMinorVersion10  (0x10)
  73.  
  74. /* Version numbers for the API described in this header */
  75. #define kQTVRAPIMajorVersion kQTVRAPIMajorVersion02
  76. #define kQTVRAPIMinorVersion kQTVRAPIMinorVersion10
  77.  
  78.  
  79.  
  80. enum {
  81.     kQTVRControllerSubType        = FOUR_CHAR_CODE('ctyp'),
  82.     kQTVRQTVRType                = FOUR_CHAR_CODE('qtvr'),
  83.     kQTVRPanoramaType            = FOUR_CHAR_CODE('pano'),
  84.     kQTVRObjectType                = FOUR_CHAR_CODE('obje'),
  85.     kQTVROldPanoType            = FOUR_CHAR_CODE('STpn'),        /* Used in QTVR 1.0 release*/
  86.     kQTVROldObjectType            = FOUR_CHAR_CODE('stna')        /* Used in QTVR 1.0 release*/
  87. };
  88.  
  89. #if TARGET_OS_MAC
  90. #define kQTVRUnknownType '????'        // Unknown node type
  91. #else
  92. #define kQTVRUnknownType '\?\?\?\?'    // Unknown node type
  93. #endif  /* TARGET_OS_MAC */
  94.  
  95. /* QTVR hot spot types*/
  96.  
  97. enum {
  98.     kQTVRHotSpotLinkType        = FOUR_CHAR_CODE('link'),
  99.     kQTVRHotSpotURLType            = FOUR_CHAR_CODE('url '),
  100.     kQTVRHotSpotUndefinedType    = FOUR_CHAR_CODE('undf')
  101. };
  102.  
  103. /* Special Values for nodeID in QTVRGoToNodeID*/
  104.  
  105. enum {
  106.     kQTVRCurrentNode            = 0,
  107.     kQTVRPreviousNode            = (long)0x80000000,
  108.     kQTVRDefaultNode            = (long)0x80000001
  109. };
  110.  
  111. /* Panorama correction modes used for the kQTVRImagingCorrection imaging property*/
  112.  
  113. enum {
  114.     kQTVRNoCorrection            = 0,
  115.     kQTVRPartialCorrection        = 1,
  116.     kQTVRFullCorrection            = 2
  117. };
  118.  
  119. /* Imaging Modes used by QTVRSetImagingProperty, QTVRGetImagingProperty, QTVRUpdate, QTVRBeginUpdate*/
  120.  
  121. enum {
  122.     kQTVRStatic                    = 1,
  123.     kQTVRMotion                    = 2,
  124.     kQTVRCurrentMode            = 0,                            /* Special Value for QTVRUpdate*/
  125.     kQTVRAllModes                = 100                            /* Special value for QTVRSetProperty*/
  126. };
  127.  
  128. typedef UInt32                             QTVRImagingMode;
  129. /* Imaging Properties used by QTVRSetImagingProperty, QTVRGetImagingProperty*/
  130.  
  131. enum {
  132.     kQTVRImagingCorrection        = 1,
  133.     kQTVRImagingQuality            = 2,
  134.     kQTVRImagingDirectDraw        = 3,
  135.     kQTVRImagingCurrentMode        = 100                            /* Get Only*/
  136. };
  137.  
  138. /* OR the above with kImagingDefaultValue to get/set the default value*/
  139.  
  140. enum {
  141.     kImagingDefaultValue        = (long)0x80000000
  142. };
  143.  
  144. /* Transition Types used by QTVRSetTransitionProperty, QTVREnableTransition*/
  145.  
  146. enum {
  147.     kQTVRTransitionSwing        = 1
  148. };
  149.  
  150. /* Transition Properties QTVRSetTransitionProperty*/
  151.  
  152. enum {
  153.     kQTVRTransitionSpeed        = 1,
  154.     kQTVRTransitionDirection    = 2
  155. };
  156.  
  157. /* Constraint values used to construct value returned by GetConstraintStatus*/
  158.  
  159. enum {
  160.     kQTVRUnconstrained            = 0L,
  161.     kQTVRCantPanLeft            = 1L << 0,
  162.     kQTVRCantPanRight            = 1L << 1,
  163.     kQTVRCantPanUp                = 1L << 2,
  164.     kQTVRCantPanDown            = 1L << 3,
  165.     kQTVRCantZoomIn                = 1L << 4,
  166.     kQTVRCantZoomOut            = 1L << 5,
  167.     kQTVRCantTranslateLeft        = 1L << 6,
  168.     kQTVRCantTranslateRight        = 1L << 7,
  169.     kQTVRCantTranslateUp        = 1L << 8,
  170.     kQTVRCantTranslateDown        = 1L << 9
  171. };
  172.  
  173. /* Object-only mouse mode values used to construct value returned by QTVRGetCurrentMouseMode*/
  174.  
  175. enum {
  176.     kQTVRPanning                = 1L << 0,                        /* standard objects, "object only" controllers*/
  177.     kQTVRTranslating            = 1L << 1,                        /* all objects*/
  178.     kQTVRZooming                = 1L << 2,                        /* all objects*/
  179.     kQTVRScrolling                = 1L << 3,                        /* standard object arrow scrollers and joystick object*/
  180.     kQTVRSelecting                = 1L << 4                        /* object absolute controller*/
  181. };
  182.  
  183. /* Properties for use with QTVRSetInteractionProperty/GetInteractionProperty*/
  184.  
  185. enum {
  186.     kQTVRInteractionMouseClickHysteresis = 1,                    /* pixels within which the mouse is considered not to have moved (UInt16)*/
  187.     kQTVRInteractionMouseClickTimeout = 2,                        /* ticks after which a mouse click times out and turns into panning (UInt32)*/
  188.     kQTVRInteractionPanTiltSpeed = 3,                            /* control the relative pan/tilt speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5;*/
  189.     kQTVRInteractionZoomSpeed    = 4,                            /* control the relative zooming speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5;*/
  190.     kQTVRInteractionTranslateOnMouseDown = 101,                    /* Holding MouseDown with this setting translates zoomed object movies (Boolean)*/
  191.     kQTVRInteractionMouseMotionScale = 102,                        /* The maximum angle of rotation caused by dragging across the display window. (* float)*/
  192.     kQTVRInteractionNudgeMode    = 103                            /* A QTVRNudgeMode: rotate, translate, or the same as the current mouse mode. Requires QTVR 2.1*/
  193. };
  194.  
  195. /* OR the above with kQTVRInteractionDefaultValue to get/set the default value*/
  196.  
  197. enum {
  198.     kQTVRInteractionDefaultValue = (long)0x80000000
  199. };
  200.  
  201.  
  202. /* Geometry constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  203.  
  204. enum {
  205.     kQTVRUseMovieGeometry        = 0,
  206.     kQTVRVerticalCylinder        = FOUR_CHAR_CODE('vcyl')
  207. };
  208.  
  209. /* Resolution constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  210.  
  211. enum {
  212.     kQTVRDefaultRes                = 0,
  213.     kQTVRFullRes                = 1L << 0,
  214.     kQTVRHalfRes                = 1L << 1,
  215.     kQTVRQuarterRes                = 1L << 2
  216. };
  217.  
  218. /* QTVR-specific pixelFormat constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo*/
  219.  
  220. enum {
  221.     kQTVRUseMovieDepth            = 0
  222. };
  223.  
  224. /* Cache Size Pref constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings*/
  225.  
  226. enum {
  227.     kQTVRMinimumCache            = -1,
  228.     kQTVRSuggestedCache            = 0,
  229.     kQTVRFullCache                = 1
  230. };
  231.  
  232. /* Angular units used by QTVRSetAngularUnits*/
  233.  
  234. enum {
  235.     kQTVRDegrees                = 0,
  236.     kQTVRRadians                = 1
  237. };
  238.  
  239. typedef UInt32                             QTVRAngularUnits;
  240. /* Values for enableFlag parameter in QTVREnableHotSpot*/
  241.  
  242. enum {
  243.     kQTVRHotSpotID                = 0,
  244.     kQTVRHotSpotType            = 1,
  245.     kQTVRAllHotSpots            = 2
  246. };
  247.  
  248. /* Values for kind parameter in QTVRGet/SetConstraints, QTVRGetViewingLimits*/
  249.  
  250. enum {
  251.     kQTVRPan                    = 0,
  252.     kQTVRTilt                    = 1,
  253.     kQTVRFieldOfView            = 2,
  254.     kQTVRViewCenterH            = 4,                            /* WrapAndConstrain only*/
  255.     kQTVRViewCenterV            = 5                                /* WrapAndConstrain only*/
  256. };
  257.  
  258. /* Values for setting parameter in QTVRSetAnimationSetting, QTVRGetAnimationSetting*/
  259.  
  260. enum {
  261.                                                                 /* View Frame Animation Settings*/
  262.     kQTVRPalindromeViewFrames    = 1,
  263.     kQTVRStartFirstViewFrame    = 2,
  264.     kQTVRDontLoopViewFrames        = 3,
  265.     kQTVRPlayEveryViewFrame        = 4,                            /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  266.                                                                 /* View Animation Settings*/
  267.     kQTVRSyncViewToFrameRate    = 16,
  268.     kQTVRPalindromeViews        = 17,
  269.     kQTVRPlayStreamingViews        = 18                            /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  270. };
  271.  
  272. typedef UInt32                             QTVRObjectAnimationSetting;
  273.  
  274. enum {
  275.     kQTVRWrapPan                = 1,
  276.     kQTVRWrapTilt                = 2,
  277.     kQTVRCanZoom                = 3,
  278.     kQTVRReverseHControl        = 4,
  279.     kQTVRReverseVControl        = 5,
  280.     kQTVRSwapHVControl            = 6,
  281.     kQTVRTranslation            = 7
  282. };
  283.  
  284. typedef UInt32                             QTVRControlSetting;
  285.  
  286. enum {
  287.     kQTVRDefault                = 0,
  288.     kQTVRCurrent                = 2,
  289.     kQTVRMouseDown                = 3
  290. };
  291.  
  292. typedef UInt32                             QTVRViewStateType;
  293.  
  294. enum {
  295.     kQTVRRight                    = 0,
  296.     kQTVRUpRight                = 45,
  297.     kQTVRUp                        = 90,
  298.     kQTVRUpLeft                    = 135,
  299.     kQTVRLeft                    = 180,
  300.     kQTVRDownLeft                = 225,
  301.     kQTVRDown                    = 270,
  302.     kQTVRDownRight                = 315
  303. };
  304.  
  305. typedef UInt32                             QTVRNudgeControl;
  306.  
  307. enum {
  308.     kQTVRNudgeRotate            = 0,
  309.     kQTVRNudgeTranslate            = 1,
  310.     kQTVRNudgeSameAsMouse        = 2
  311. };
  312.  
  313. typedef UInt32                             QTVRNudgeMode;
  314. /* Flags to control elements of the QTVR control bar (set via mcActionSetFlags) */
  315.  
  316. enum {
  317.     mcFlagQTVRSuppressBackBtn    = 1L << 16,
  318.     mcFlagQTVRSuppressZoomBtns    = 1L << 17,
  319.     mcFlagQTVRSuppressHotSpotBtn = 1L << 18,
  320.     mcFlagQTVRSuppressTranslateBtn = 1L << 19,
  321.     mcFlagQTVRSuppressHelpText    = 1L << 20,
  322.     mcFlagQTVRSuppressHotSpotNames = 1L << 21,
  323.     mcFlagQTVRExplicitFlagSet    = 1L << 31                        /* bits 0->30 should be interpreted as "explicit on" for the corresponding suppression bits*/
  324. };
  325.  
  326. /* Cursor types used in type field of QTVRCursorRecord*/
  327.  
  328. enum {
  329.     kQTVRUseDefaultCursor        = 0,
  330.     kQTVRStdCursorType            = 1,
  331.     kQTVRColorCursorType        = 2
  332. };
  333.  
  334. /* Values for flags parameter in QTVRMouseOverHotSpot callback*/
  335.  
  336. enum {
  337.     kQTVRHotSpotEnter            = 0,
  338.     kQTVRHotSpotWithin            = 1,
  339.     kQTVRHotSpotLeave            = 2
  340. };
  341.  
  342. /* Values for flags parameter in QTVRSetPrescreenImagingCompleteProc*/
  343.  
  344. enum {
  345.     kQTVRPreScreenEveryIdle        = 1L << 0                        /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  346. };
  347.  
  348. /* Values for flags field of areasOfInterest in QTVRSetBackBufferImagingProc*/
  349.  
  350. enum {
  351.     kQTVRBackBufferEveryUpdate    = 1L << 0,
  352.     kQTVRBackBufferEveryIdle    = 1L << 1,
  353.     kQTVRBackBufferAlwaysRefresh = 1L << 2
  354. };
  355.  
  356. /* Values for flagsIn parameter in QTVRBackBufferImaging callback*/
  357.  
  358. enum {
  359.     kQTVRBackBufferRectVisible    = 1L << 0,
  360.     kQTVRBackBufferWasRefreshed    = 1L << 1
  361. };
  362.  
  363. /* Values for flagsOut parameter in QTVRBackBufferImaging callback*/
  364.  
  365. enum {
  366.     kQTVRBackBufferFlagDidDraw    = 1L << 0,
  367.     kQTVRBackBufferFlagLastFlag    = 1L << 31
  368. };
  369.  
  370. /* QTVRCursorRecord used in QTVRReplaceCursor*/
  371.  
  372. struct QTVRCursorRecord {
  373.     UInt16                             theType;                    /* field was previously named "type"*/
  374.     SInt16                             rsrcID;
  375.     Handle                             handle;
  376. };
  377. typedef struct QTVRCursorRecord            QTVRCursorRecord;
  378.  
  379. struct QTVRFloatPoint {
  380.     float                             x;
  381.     float                             y;
  382. };
  383. typedef struct QTVRFloatPoint            QTVRFloatPoint;
  384. /* Struct used for areasOfInterest parameter in QTVRSetBackBufferImagingProc*/
  385.  
  386. struct QTVRAreaOfInterest {
  387.     float                             panAngle;
  388.     float                             tiltAngle;
  389.     float                             width;
  390.     float                             height;
  391.     UInt32                             flags;
  392. };
  393. typedef struct QTVRAreaOfInterest        QTVRAreaOfInterest;
  394. /*
  395.   =================================================================================================
  396.    Callback routines 
  397.   -------------------------------------------------------------------------------------------------
  398. */
  399.  
  400. typedef CALLBACK_API( OSErr , QTVRLeavingNodeProcPtr )(QTVRInstance qtvr, UInt32 fromNodeID, UInt32 toNodeID, Boolean *cancel, SInt32 refCon);
  401. typedef CALLBACK_API( OSErr , QTVREnteringNodeProcPtr )(QTVRInstance qtvr, UInt32 nodeID, SInt32 refCon);
  402. typedef CALLBACK_API( OSErr , QTVRMouseOverHotSpotProcPtr )(QTVRInstance qtvr, UInt32 hotSpotID, UInt32 flags, SInt32 refCon);
  403. typedef CALLBACK_API( OSErr , QTVRImagingCompleteProcPtr )(QTVRInstance qtvr, SInt32 refCon);
  404. typedef CALLBACK_API( OSErr , QTVRBackBufferImagingProcPtr )(QTVRInstance qtvr, Rect *drawRect, UInt16 areaIndex, UInt32 flagsIn, UInt32 *flagsOut, SInt32 refCon);
  405. typedef STACK_UPP_TYPE(QTVRLeavingNodeProcPtr)                     QTVRLeavingNodeUPP;
  406. typedef STACK_UPP_TYPE(QTVREnteringNodeProcPtr)                 QTVREnteringNodeUPP;
  407. typedef STACK_UPP_TYPE(QTVRMouseOverHotSpotProcPtr)             QTVRMouseOverHotSpotUPP;
  408. typedef STACK_UPP_TYPE(QTVRImagingCompleteProcPtr)                 QTVRImagingCompleteUPP;
  409. typedef STACK_UPP_TYPE(QTVRBackBufferImagingProcPtr)             QTVRBackBufferImagingUPP;
  410. enum { uppQTVRLeavingNodeProcInfo = 0x0000FFE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  411. enum { uppQTVREnteringNodeProcInfo = 0x00000FE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  412. enum { uppQTVRMouseOverHotSpotProcInfo = 0x00003FE0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  413. enum { uppQTVRImagingCompleteProcInfo = 0x000003E0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes) */
  414. enum { uppQTVRBackBufferImagingProcInfo = 0x0003FBE0 };         /* pascal 2_bytes Func(4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  415. #define NewQTVRLeavingNodeProc(userRoutine)                     (QTVRLeavingNodeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRLeavingNodeProcInfo, GetCurrentArchitecture())
  416. #define NewQTVREnteringNodeProc(userRoutine)                     (QTVREnteringNodeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVREnteringNodeProcInfo, GetCurrentArchitecture())
  417. #define NewQTVRMouseOverHotSpotProc(userRoutine)                 (QTVRMouseOverHotSpotUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRMouseOverHotSpotProcInfo, GetCurrentArchitecture())
  418. #define NewQTVRImagingCompleteProc(userRoutine)                 (QTVRImagingCompleteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRImagingCompleteProcInfo, GetCurrentArchitecture())
  419. #define NewQTVRBackBufferImagingProc(userRoutine)                 (QTVRBackBufferImagingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRBackBufferImagingProcInfo, GetCurrentArchitecture())
  420. #define CallQTVRLeavingNodeProc(userRoutine, qtvr, fromNodeID, toNodeID, cancel, refCon)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppQTVRLeavingNodeProcInfo, (qtvr), (fromNodeID), (toNodeID), (cancel), (refCon))
  421. #define CallQTVREnteringNodeProc(userRoutine, qtvr, nodeID, refCon)  CALL_THREE_PARAMETER_UPP((userRoutine), uppQTVREnteringNodeProcInfo, (qtvr), (nodeID), (refCon))
  422. #define CallQTVRMouseOverHotSpotProc(userRoutine, qtvr, hotSpotID, flags, refCon)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppQTVRMouseOverHotSpotProcInfo, (qtvr), (hotSpotID), (flags), (refCon))
  423. #define CallQTVRImagingCompleteProc(userRoutine, qtvr, refCon)     CALL_TWO_PARAMETER_UPP((userRoutine), uppQTVRImagingCompleteProcInfo, (qtvr), (refCon))
  424. #define CallQTVRBackBufferImagingProc(userRoutine, qtvr, drawRect, areaIndex, flagsIn, flagsOut, refCon)  CALL_SIX_PARAMETER_UPP((userRoutine), uppQTVRBackBufferImagingProcInfo, (qtvr), (drawRect), (areaIndex), (flagsIn), (flagsOut), (refCon))
  425. /*
  426.   =================================================================================================
  427.     QTVR Intercept Struct, Callback, Routine Descriptors 
  428.   -------------------------------------------------------------------------------------------------
  429. */
  430.  
  431.  
  432. enum {
  433.     kQTVRSetPanAngleSelector    = 0x2000,
  434.     kQTVRSetTiltAngleSelector    = 0x2001,
  435.     kQTVRSetFieldOfViewSelector    = 0x2002,
  436.     kQTVRSetViewCenterSelector    = 0x2003,
  437.     kQTVRMouseEnterSelector        = 0x2004,
  438.     kQTVRMouseWithinSelector    = 0x2005,
  439.     kQTVRMouseLeaveSelector        = 0x2006,
  440.     kQTVRMouseDownSelector        = 0x2007,
  441.     kQTVRMouseStillDownSelector    = 0x2008,
  442.     kQTVRMouseUpSelector        = 0x2009,
  443.     kQTVRTriggerHotSpotSelector    = 0x200A,
  444.     kQTVRGetHotSpotTypeSelector    = 0x200B                        /* Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  445. };
  446.  
  447.  
  448. typedef UInt32                             QTVRProcSelector;
  449.  
  450. struct QTVRInterceptRecord {
  451.     SInt32                             reserved1;
  452.     SInt32                             selector;
  453.  
  454.     SInt32                             reserved2;
  455.     SInt32                             reserved3;
  456.  
  457.     SInt32                             paramCount;
  458.     void *                            parameter[6];
  459. };
  460. typedef struct QTVRInterceptRecord        QTVRInterceptRecord;
  461.  
  462. typedef QTVRInterceptRecord *            QTVRInterceptPtr;
  463. /* Prototype for Intercept Proc callback*/
  464. typedef CALLBACK_API( void , QTVRInterceptProcPtr )(QTVRInstance qtvr, QTVRInterceptPtr qtvrMsg, SInt32 refCon, Boolean *cancel);
  465. typedef STACK_UPP_TYPE(QTVRInterceptProcPtr)                     QTVRInterceptUPP;
  466. enum { uppQTVRInterceptProcInfo = 0x00003FC0 };                 /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  467. #define NewQTVRInterceptProc(userRoutine)                         (QTVRInterceptUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTVRInterceptProcInfo, GetCurrentArchitecture())
  468. #define CallQTVRInterceptProc(userRoutine, qtvr, qtvrMsg, refCon, cancel)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppQTVRInterceptProcInfo, (qtvr), (qtvrMsg), (refCon), (cancel))
  469. /*
  470.   =================================================================================================
  471.     Initialization QTVR calls 
  472.   -------------------------------------------------------------------------------------------------
  473.    Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) and only work on Non-Macintosh platforms
  474. */
  475. #if !TARGET_OS_MAC
  476. EXTERN_API_C( OSErr )
  477. InitializeQTVR                    (void);
  478.  
  479. EXTERN_API_C( OSErr )
  480. TerminateQTVR                    (void);
  481.  
  482. #endif  /*  !TARGET_OS_MAC */
  483.  
  484. /*
  485.   =================================================================================================
  486.     General QTVR calls 
  487.   -------------------------------------------------------------------------------------------------
  488. */
  489. EXTERN_API_C( Track )
  490. QTVRGetQTVRTrack                (Movie                     theMovie,
  491.                                  SInt32                 index);
  492.  
  493. EXTERN_API_C( OSErr )
  494. QTVRGetQTVRInstance                (QTVRInstance *            qtvr,
  495.                                  Track                     qtvrTrack,
  496.                                  MovieController         mc);
  497.  
  498. /*
  499.   =================================================================================================
  500.     Viewing Angles and Zooming 
  501.   -------------------------------------------------------------------------------------------------
  502. */
  503.  
  504. EXTERN_API_C( OSErr )
  505. QTVRSetPanAngle                    (QTVRInstance             qtvr,
  506.                                  float                     panAngle);
  507.  
  508. EXTERN_API_C( float )
  509. QTVRGetPanAngle                    (QTVRInstance             qtvr);
  510.  
  511. EXTERN_API_C( OSErr )
  512. QTVRSetTiltAngle                (QTVRInstance             qtvr,
  513.                                  float                     tiltAngle);
  514.  
  515. EXTERN_API_C( float )
  516. QTVRGetTiltAngle                (QTVRInstance             qtvr);
  517.  
  518. EXTERN_API_C( OSErr )
  519. QTVRSetFieldOfView                (QTVRInstance             qtvr,
  520.                                  float                     fieldOfView);
  521.  
  522. EXTERN_API_C( float )
  523. QTVRGetFieldOfView                (QTVRInstance             qtvr);
  524.  
  525. EXTERN_API_C( OSErr )
  526. QTVRShowDefaultView                (QTVRInstance             qtvr);
  527.  
  528. /* Object Specific*/
  529. EXTERN_API_C( OSErr )
  530. QTVRSetViewCenter                (QTVRInstance             qtvr,
  531.                                  const QTVRFloatPoint *    viewCenter);
  532.  
  533. EXTERN_API_C( OSErr )
  534. QTVRGetViewCenter                (QTVRInstance             qtvr,
  535.                                  QTVRFloatPoint *        viewCenter);
  536.  
  537. EXTERN_API_C( OSErr )
  538. QTVRNudge                        (QTVRInstance             qtvr,
  539.                                  QTVRNudgeControl         direction);
  540.  
  541. /* QTVRInteractionNudge requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  542. EXTERN_API_C( OSErr )
  543. QTVRInteractionNudge            (QTVRInstance             qtvr,
  544.                                  QTVRNudgeControl         direction);
  545.  
  546. /*
  547.   =================================================================================================
  548.     Scene and Node Location Information 
  549.   -------------------------------------------------------------------------------------------------
  550. */
  551.  
  552. EXTERN_API_C( OSErr )
  553. QTVRGetVRWorld                    (QTVRInstance             qtvr,
  554.                                  QTAtomContainer *        VRWorld);
  555.  
  556. EXTERN_API_C( OSErr )
  557. QTVRGetNodeInfo                    (QTVRInstance             qtvr,
  558.                                  UInt32                 nodeID,
  559.                                  QTAtomContainer *        nodeInfo);
  560.  
  561. EXTERN_API_C( OSErr )
  562. QTVRGoToNodeID                    (QTVRInstance             qtvr,
  563.                                  UInt32                 nodeID);
  564.  
  565. EXTERN_API_C( UInt32 )
  566. QTVRGetCurrentNodeID            (QTVRInstance             qtvr);
  567.  
  568. EXTERN_API_C( OSType )
  569. QTVRGetNodeType                    (QTVRInstance             qtvr,
  570.                                  UInt32                 nodeID);
  571.  
  572. /*
  573.   =================================================================================================
  574.     Hot Spot related calls 
  575.   -------------------------------------------------------------------------------------------------
  576. */
  577.  
  578. EXTERN_API_C( OSErr )
  579. QTVRPtToHotSpotID                (QTVRInstance             qtvr,
  580.                                  Point                     pt,
  581.                                  UInt32 *                hotSpotID);
  582.  
  583. /* QTVRGetHotSpotType requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  584. EXTERN_API_C( OSErr )
  585. QTVRGetHotSpotType                (QTVRInstance             qtvr,
  586.                                  UInt32                 hotSpotID,
  587.                                  OSType *                hotSpotType);
  588.  
  589. EXTERN_API_C( OSErr )
  590. QTVRTriggerHotSpot                (QTVRInstance             qtvr,
  591.                                  UInt32                 hotSpotID,
  592.                                  QTAtomContainer         nodeInfo,
  593.                                  QTAtom                 selectedAtom);
  594.  
  595. EXTERN_API_C( OSErr )
  596. QTVRSetMouseOverHotSpotProc        (QTVRInstance             qtvr,
  597.                                  QTVRMouseOverHotSpotUPP  mouseOverHotSpotProc,
  598.                                  SInt32                 refCon,
  599.                                  UInt32                 flags);
  600.  
  601. EXTERN_API_C( OSErr )
  602. QTVREnableHotSpot                (QTVRInstance             qtvr,
  603.                                  UInt32                 enableFlag,
  604.                                  UInt32                 hotSpotValue,
  605.                                  Boolean                 enable);
  606.  
  607. EXTERN_API_C( UInt32 )
  608. QTVRGetVisibleHotSpots            (QTVRInstance             qtvr,
  609.                                  Handle                 hotSpots);
  610.  
  611. EXTERN_API_C( OSErr )
  612. QTVRGetHotSpotRegion            (QTVRInstance             qtvr,
  613.                                  UInt32                 hotSpotID,
  614.                                  RgnHandle                 hotSpotRegion);
  615.  
  616. /*
  617.   =================================================================================================
  618.     Event & Cursor Handling Calls 
  619.   -------------------------------------------------------------------------------------------------
  620. */
  621.  
  622. EXTERN_API_C( OSErr )
  623. QTVRSetMouseOverTracking        (QTVRInstance             qtvr,
  624.                                  Boolean                 enable);
  625.  
  626. EXTERN_API_C( Boolean )
  627. QTVRGetMouseOverTracking        (QTVRInstance             qtvr);
  628.  
  629. EXTERN_API_C( OSErr )
  630. QTVRSetMouseDownTracking        (QTVRInstance             qtvr,
  631.                                  Boolean                 enable);
  632.  
  633. EXTERN_API_C( Boolean )
  634. QTVRGetMouseDownTracking        (QTVRInstance             qtvr);
  635.  
  636. EXTERN_API_C( OSErr )
  637. QTVRMouseEnter                    (QTVRInstance             qtvr,
  638.                                  Point                     pt,
  639.                                  UInt32 *                hotSpotID,
  640.                                  WindowPtr                 w);
  641.  
  642. EXTERN_API_C( OSErr )
  643. QTVRMouseWithin                    (QTVRInstance             qtvr,
  644.                                  Point                     pt,
  645.                                  UInt32 *                hotSpotID,
  646.                                  WindowPtr                 w);
  647.  
  648. EXTERN_API_C( OSErr )
  649. QTVRMouseLeave                    (QTVRInstance             qtvr,
  650.                                  Point                     pt,
  651.                                  WindowPtr                 w);
  652.  
  653. EXTERN_API_C( OSErr )
  654. QTVRMouseDown                    (QTVRInstance             qtvr,
  655.                                  Point                     pt,
  656.                                  UInt32                 when,
  657.                                  UInt16                 modifiers,
  658.                                  UInt32 *                hotSpotID,
  659.                                  WindowPtr                 w);
  660.  
  661. EXTERN_API_C( OSErr )
  662. QTVRMouseStillDown                (QTVRInstance             qtvr,
  663.                                  Point                     pt,
  664.                                  UInt32 *                hotSpotID,
  665.                                  WindowPtr                 w);
  666.  
  667. EXTERN_API_C( OSErr )
  668. QTVRMouseUp                        (QTVRInstance             qtvr,
  669.                                  Point                     pt,
  670.                                  UInt32 *                hotSpotID,
  671.                                  WindowPtr                 w);
  672.  
  673. /* These require QTVR 2.01 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion01)*/
  674. EXTERN_API_C( OSErr )
  675. QTVRMouseStillDownExtended        (QTVRInstance             qtvr,
  676.                                  Point                     pt,
  677.                                  UInt32 *                hotSpotID,
  678.                                  WindowPtr                 w,
  679.                                  UInt32                 when,
  680.                                  UInt16                 modifiers);
  681.  
  682. EXTERN_API_C( OSErr )
  683. QTVRMouseUpExtended                (QTVRInstance             qtvr,
  684.                                  Point                     pt,
  685.                                  UInt32 *                hotSpotID,
  686.                                  WindowPtr                 w,
  687.                                  UInt32                 when,
  688.                                  UInt16                 modifiers);
  689.  
  690. /*
  691.   =================================================================================================
  692.     Intercept Routines 
  693.   -------------------------------------------------------------------------------------------------
  694. */
  695.  
  696. EXTERN_API_C( OSErr )
  697. QTVRInstallInterceptProc        (QTVRInstance             qtvr,
  698.                                  QTVRProcSelector         selector,
  699.                                  QTVRInterceptUPP         interceptProc,
  700.                                  SInt32                 refCon,
  701.                                  UInt32                 flags);
  702.  
  703. EXTERN_API_C( OSErr )
  704. QTVRCallInterceptedProc            (QTVRInstance             qtvr,
  705.                                  QTVRInterceptRecord *    qtvrMsg);
  706.  
  707. /*
  708.   =================================================================================================
  709.     Object Movie Specific Calls 
  710.   -------------------------------------------------------------------------------------------------
  711.    QTVRGetCurrentMouseMode requires QTRVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)
  712. */
  713. EXTERN_API_C( UInt32 )
  714. QTVRGetCurrentMouseMode            (QTVRInstance             qtvr);
  715.  
  716. EXTERN_API_C( OSErr )
  717. QTVRSetFrameRate                (QTVRInstance             qtvr,
  718.                                  float                     rate);
  719.  
  720. EXTERN_API_C( float )
  721. QTVRGetFrameRate                (QTVRInstance             qtvr);
  722.  
  723. EXTERN_API_C( OSErr )
  724. QTVRSetViewRate                    (QTVRInstance             qtvr,
  725.                                  float                     rate);
  726.  
  727. EXTERN_API_C( float )
  728. QTVRGetViewRate                    (QTVRInstance             qtvr);
  729.  
  730. EXTERN_API_C( OSErr )
  731. QTVRSetViewCurrentTime            (QTVRInstance             qtvr,
  732.                                  TimeValue                 time);
  733.  
  734. EXTERN_API_C( TimeValue )
  735. QTVRGetViewCurrentTime            (QTVRInstance             qtvr);
  736.  
  737. EXTERN_API_C( TimeValue )
  738. QTVRGetCurrentViewDuration        (QTVRInstance             qtvr);
  739.  
  740. /*
  741.   =================================================================================================
  742.    View State Calls - QTVR Object Only
  743.   -------------------------------------------------------------------------------------------------
  744. */
  745.  
  746. EXTERN_API_C( OSErr )
  747. QTVRSetViewState                (QTVRInstance             qtvr,
  748.                                  QTVRViewStateType         viewStateType,
  749.                                  UInt16                 state);
  750.  
  751. EXTERN_API_C( OSErr )
  752. QTVRGetViewState                (QTVRInstance             qtvr,
  753.                                  QTVRViewStateType         viewStateType,
  754.                                  UInt16 *                state);
  755.  
  756. EXTERN_API_C( UInt16 )
  757. QTVRGetViewStateCount            (QTVRInstance             qtvr);
  758.  
  759. EXTERN_API_C( OSErr )
  760. QTVRSetAnimationSetting            (QTVRInstance             qtvr,
  761.                                  QTVRObjectAnimationSetting  setting,
  762.                                  Boolean                 enable);
  763.  
  764. EXTERN_API_C( OSErr )
  765. QTVRGetAnimationSetting            (QTVRInstance             qtvr,
  766.                                  QTVRObjectAnimationSetting  setting,
  767.                                  Boolean *                enable);
  768.  
  769. EXTERN_API_C( OSErr )
  770. QTVRSetControlSetting            (QTVRInstance             qtvr,
  771.                                  QTVRControlSetting     setting,
  772.                                  Boolean                 enable);
  773.  
  774. EXTERN_API_C( OSErr )
  775. QTVRGetControlSetting            (QTVRInstance             qtvr,
  776.                                  QTVRControlSetting     setting,
  777.                                  Boolean *                enable);
  778.  
  779. EXTERN_API_C( OSErr )
  780. QTVREnableFrameAnimation        (QTVRInstance             qtvr,
  781.                                  Boolean                 enable);
  782.  
  783. EXTERN_API_C( Boolean )
  784. QTVRGetFrameAnimation            (QTVRInstance             qtvr);
  785.  
  786. EXTERN_API_C( OSErr )
  787. QTVREnableViewAnimation            (QTVRInstance             qtvr,
  788.                                  Boolean                 enable);
  789.  
  790. EXTERN_API_C( Boolean )
  791. QTVRGetViewAnimation            (QTVRInstance             qtvr);
  792.  
  793.  
  794. /*
  795.   =================================================================================================
  796.     Imaging Characteristics 
  797.   -------------------------------------------------------------------------------------------------
  798. */
  799.  
  800. EXTERN_API_C( OSErr )
  801. QTVRSetVisible                    (QTVRInstance             qtvr,
  802.                                  Boolean                 visible);
  803.  
  804. EXTERN_API_C( Boolean )
  805. QTVRGetVisible                    (QTVRInstance             qtvr);
  806.  
  807. EXTERN_API_C( OSErr )
  808. QTVRSetImagingProperty            (QTVRInstance             qtvr,
  809.                                  QTVRImagingMode         imagingMode,
  810.                                  UInt32                 imagingProperty,
  811.                                  SInt32                 propertyValue);
  812.  
  813. EXTERN_API_C( OSErr )
  814. QTVRGetImagingProperty            (QTVRInstance             qtvr,
  815.                                  QTVRImagingMode         imagingMode,
  816.                                  UInt32                 imagingProperty,
  817.                                  SInt32 *                propertyValue);
  818.  
  819. EXTERN_API_C( OSErr )
  820. QTVRUpdate                        (QTVRInstance             qtvr,
  821.                                  QTVRImagingMode         imagingMode);
  822.  
  823. EXTERN_API_C( OSErr )
  824. QTVRBeginUpdateStream            (QTVRInstance             qtvr,
  825.                                  QTVRImagingMode         imagingMode);
  826.  
  827. EXTERN_API_C( OSErr )
  828. QTVREndUpdateStream                (QTVRInstance             qtvr);
  829.  
  830. EXTERN_API_C( OSErr )
  831. QTVRSetTransitionProperty        (QTVRInstance             qtvr,
  832.                                  UInt32                 transitionType,
  833.                                  UInt32                 transitionProperty,
  834.                                  SInt32                 transitionValue);
  835.  
  836. EXTERN_API_C( OSErr )
  837. QTVREnableTransition            (QTVRInstance             qtvr,
  838.                                  UInt32                 transitionType,
  839.                                  Boolean                 enable);
  840.  
  841. /*
  842.   =================================================================================================
  843.     Basic Conversion and Math Routines 
  844.   -------------------------------------------------------------------------------------------------
  845. */
  846.  
  847. EXTERN_API_C( OSErr )
  848. QTVRSetAngularUnits                (QTVRInstance             qtvr,
  849.                                  QTVRAngularUnits         units);
  850.  
  851. EXTERN_API_C( QTVRAngularUnits )
  852. QTVRGetAngularUnits                (QTVRInstance             qtvr);
  853.  
  854. /* Pano specific routines*/
  855. EXTERN_API_C( OSErr )
  856. QTVRPtToAngles                    (QTVRInstance             qtvr,
  857.                                  Point                     pt,
  858.                                  float *                panAngle,
  859.                                  float *                tiltAngle);
  860.  
  861. EXTERN_API_C( OSErr )
  862. QTVRCoordToAngles                (QTVRInstance             qtvr,
  863.                                  QTVRFloatPoint *        coord,
  864.                                  float *                panAngle,
  865.                                  float *                tiltAngle);
  866.  
  867. EXTERN_API_C( OSErr )
  868. QTVRAnglesToCoord                (QTVRInstance             qtvr,
  869.                                  float                     panAngle,
  870.                                  float                     tiltAngle,
  871.                                  QTVRFloatPoint *        coord);
  872.  
  873. /* Object specific routines*/
  874. EXTERN_API_C( short )
  875. QTVRPanToColumn                    (QTVRInstance             qtvr,
  876.                                  float                     panAngle);
  877.  
  878. /* zero based    */
  879. EXTERN_API_C( float )
  880. QTVRColumnToPan                    (QTVRInstance             qtvr,
  881.                                  short                     column);
  882.  
  883. /* zero based    */
  884. EXTERN_API_C( short )
  885. QTVRTiltToRow                    (QTVRInstance             qtvr,
  886.                                  float                     tiltAngle);
  887.  
  888. /* zero based    */
  889. EXTERN_API_C( float )
  890. QTVRRowToTilt                    (QTVRInstance             qtvr,
  891.                                  short                     row);
  892.  
  893. /* zero based                */
  894. EXTERN_API_C( OSErr )
  895. QTVRWrapAndConstrain            (QTVRInstance             qtvr,
  896.                                  short                     kind,
  897.                                  float                     value,
  898.                                  float *                result);
  899.  
  900.  
  901. /*
  902.   =================================================================================================
  903.     Interaction Routines 
  904.   -------------------------------------------------------------------------------------------------
  905. */
  906.  
  907. EXTERN_API_C( OSErr )
  908. QTVRSetEnteringNodeProc            (QTVRInstance             qtvr,
  909.                                  QTVREnteringNodeUPP     enteringNodeProc,
  910.                                  SInt32                 refCon,
  911.                                  UInt32                 flags);
  912.  
  913. EXTERN_API_C( OSErr )
  914. QTVRSetLeavingNodeProc            (QTVRInstance             qtvr,
  915.                                  QTVRLeavingNodeUPP     leavingNodeProc,
  916.                                  SInt32                 refCon,
  917.                                  UInt32                 flags);
  918.  
  919. EXTERN_API_C( OSErr )
  920. QTVRSetInteractionProperty        (QTVRInstance             qtvr,
  921.                                  UInt32                 property,
  922.                                  void *                    value);
  923.  
  924. EXTERN_API_C( OSErr )
  925. QTVRGetInteractionProperty        (QTVRInstance             qtvr,
  926.                                  UInt32                 property,
  927.                                  void *                    value);
  928.  
  929. EXTERN_API_C( OSErr )
  930. QTVRReplaceCursor                (QTVRInstance             qtvr,
  931.                                  QTVRCursorRecord *        cursRecord);
  932.  
  933. /*
  934.   =================================================================================================
  935.     Viewing Limits and Constraints 
  936.   -------------------------------------------------------------------------------------------------
  937. */
  938.  
  939. EXTERN_API_C( OSErr )
  940. QTVRGetViewingLimits            (QTVRInstance             qtvr,
  941.                                  UInt16                 kind,
  942.                                  float *                minValue,
  943.                                  float *                maxValue);
  944.  
  945. EXTERN_API_C( UInt32 )
  946. QTVRGetConstraintStatus            (QTVRInstance             qtvr);
  947.  
  948. EXTERN_API_C( OSErr )
  949. QTVRGetConstraints                (QTVRInstance             qtvr,
  950.                                  UInt16                 kind,
  951.                                  float *                minValue,
  952.                                  float *                maxValue);
  953.  
  954. EXTERN_API_C( OSErr )
  955. QTVRSetConstraints                (QTVRInstance             qtvr,
  956.                                  UInt16                 kind,
  957.                                  float                     minValue,
  958.                                  float                     maxValue);
  959.  
  960.  
  961. /*
  962.   =================================================================================================
  963.     Back Buffer Memory Management 
  964.   -------------------------------------------------------------------------------------------------
  965. */
  966.  
  967. EXTERN_API_C( OSErr )
  968. QTVRGetAvailableResolutions        (QTVRInstance             qtvr,
  969.                                  UInt16 *                resolutionsMask);
  970.  
  971. /* These require QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)*/
  972. EXTERN_API_C( OSErr )
  973. QTVRGetBackBufferMemInfo        (QTVRInstance             qtvr,
  974.                                  UInt32                 geometry,
  975.                                  UInt16                 resolution,
  976.                                  UInt32                 cachePixelFormat,
  977.                                  SInt32 *                minCacheBytes,
  978.                                  SInt32 *                suggestedCacheBytes,
  979.                                  SInt32 *                fullCacheBytes);
  980.  
  981. EXTERN_API_C( OSErr )
  982. QTVRGetBackBufferSettings        (QTVRInstance             qtvr,
  983.                                  UInt32 *                geometry,
  984.                                  UInt16 *                resolution,
  985.                                  UInt32 *                cachePixelFormat,
  986.                                  SInt16 *                cacheSize);
  987.  
  988. EXTERN_API_C( OSErr )
  989. QTVRSetBackBufferPrefs            (QTVRInstance             qtvr,
  990.                                  UInt32                 geometry,
  991.                                  UInt16                 resolution,
  992.                                  UInt32                 cachePixelFormat,
  993.                                  SInt16                 cacheSize);
  994.  
  995. #if QTVR_OLD_CALLS
  996. #if TARGET_OS_MAC
  997. /*
  998.    These ≈Cache≈ calls have been replaced with the ≈BackBuffer≈ versions above.
  999.    However, the ≈BackBuffer≈ calls require QuickTime VR 2.1 to work;
  1000.     these calls will work with QuickTime VR 2.0 and 2.0.1, but only on a Macintosh.
  1001. */
  1002. EXTERN_API_C( OSErr )
  1003. QTVRGetCacheMemInfo                (QTVRInstance             qtvr,
  1004.                                  UInt16                 resolution,
  1005.                                  SInt16                 cacheDepth,
  1006.                                  SInt32 *                minCacheBytes,
  1007.                                  SInt32 *                suggestedCacheBytes,
  1008.                                  SInt32 *                fullCacheBytes);
  1009.  
  1010. EXTERN_API_C( OSErr )
  1011. QTVRGetCacheSettings            (QTVRInstance             qtvr,
  1012.                                  UInt16 *                resolution,
  1013.                                  SInt16 *                cacheDepth,
  1014.                                  SInt16 *                cacheSize);
  1015.  
  1016. EXTERN_API_C( OSErr )
  1017. QTVRSetCachePrefs                (QTVRInstance             qtvr,
  1018.                                  UInt16                 resolution,
  1019.                                  SInt16                 cacheDepth,
  1020.                                  SInt16                 cacheSize);
  1021.  
  1022. #endif  /* TARGET_OS_MAC */
  1023.  
  1024. #endif  /* QTVR_OLD_CALLS */
  1025.  
  1026. /*
  1027.   =================================================================================================
  1028.     Buffer Access 
  1029.   -------------------------------------------------------------------------------------------------
  1030. */
  1031.  
  1032. EXTERN_API_C( OSErr )
  1033. QTVRSetPrescreenImagingCompleteProc (QTVRInstance         qtvr,
  1034.                                  QTVRImagingCompleteUPP  imagingCompleteProc,
  1035.                                  SInt32                 refCon,
  1036.                                  UInt32                 flags);
  1037.  
  1038. EXTERN_API_C( OSErr )
  1039. QTVRSetBackBufferImagingProc    (QTVRInstance             qtvr,
  1040.                                  QTVRBackBufferImagingUPP  backBufferImagingProc,
  1041.                                  UInt16                 numAreas,
  1042.                                  QTVRAreaOfInterest     areasOfInterest[],
  1043.                                  SInt32                 refCon);
  1044.  
  1045. EXTERN_API_C( OSErr )
  1046. QTVRRefreshBackBuffer            (QTVRInstance             qtvr,
  1047.                                  UInt32                 flags);
  1048.  
  1049.  
  1050.  
  1051. /*
  1052.   =================================================================================================
  1053.     Old Names
  1054.   -------------------------------------------------------------------------------------------------
  1055. */
  1056. #if OLDROUTINENAMES
  1057. typedef QTVRCursorRecord                 CursorRecord;
  1058. typedef QTVRAreaOfInterest                 AreaOfInterest;
  1059. typedef QTVRFloatPoint                     FloatPoint;
  1060. typedef QTVRLeavingNodeProcPtr             LeavingNodeProcPtr;
  1061. typedef QTVRLeavingNodeUPP                 LeavingNodeUPP;
  1062. typedef QTVREnteringNodeProcPtr         EnteringNodeProcPtr;
  1063. typedef QTVREnteringNodeUPP             EnteringNodeUPP;
  1064. typedef QTVRMouseOverHotSpotProcPtr     MouseOverHotSpotProcPtr;
  1065. typedef QTVRMouseOverHotSpotUPP         MouseOverHotSpotUPP;
  1066. typedef QTVRImagingCompleteProcPtr         ImagingCompleteProcPtr;
  1067. typedef QTVRImagingCompleteUPP             ImagingCompleteUPP;
  1068. typedef QTVRBackBufferImagingProcPtr     BackBufferImagingProcPtr;
  1069. typedef QTVRBackBufferImagingUPP         BackBufferImagingUPP;
  1070. #endif  /* OLDROUTINENAMES */
  1071.  
  1072.  
  1073.  
  1074. #if PRAGMA_STRUCT_ALIGN
  1075.     #pragma options align=reset
  1076. #elif PRAGMA_STRUCT_PACKPUSH
  1077.     #pragma pack(pop)
  1078. #elif PRAGMA_STRUCT_PACK
  1079.     #pragma pack()
  1080. #endif
  1081.  
  1082. #ifdef PRAGMA_IMPORT_OFF
  1083. #pragma import off
  1084. #elif PRAGMA_IMPORT
  1085. #pragma import reset
  1086. #endif
  1087.  
  1088. #ifdef __cplusplus
  1089. }
  1090. #endif
  1091.  
  1092. #endif /* __QUICKTIMEVR__ */
  1093.  
  1094.